home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / plain / contrib / btable / btable.tex < prev   
Encoding:
Text File  |  1994-03-18  |  5.8 KB  |  129 lines

  1. %Contents:Bordered table macro as introduced at EuroTeX '92 with some mods.
  2. %Version: December 1993.
  3. %Purpose: Typeset bordered tables, abstracting from separators,
  4. %         and separation data proper from first row and column.
  5. %Example of use
  6. %\def\capbtbl{AT\&T Common Stock}
  7. %\def\header{Year\cs Price\cs Dividend}
  8. %\def\footer{* (first quarter only}
  9. %\def\data{1971\cs 41--54\cs\llap{\$}2.60\rs
  10. %             2\cs 41--54\cs         2.70}%et cetera
  11. %$$\flr\btable\data\qquad\framed\ruled\btable\data$$
  12. %Documentation: Proceedings EuroTeX '92, Prague, and MAPS 92.2.
  13. %Macro:
  14. %C.G. van der Laan, Hunzeweg 57, 9893PB, Garnwerd. Holland. 05941-1525.
  15. %btable.tex version 1, 17/7/92                 author: cgl@risc1.rug.nl
  16. \newbox\tbl\let\ea=\expandafter
  17. %Cell vertical size, row height and depth (separation implicit),
  18. \newdimen\cvsize\newdimen\tsht\newdimen\tsdp\newdimen\tvsize\newdimen\thsize
  19. %Parameter setting macros:   Rules
  20. \def\hruled{\def\lineglue{\hrulefill}\def\colsep{}      \def\rowsep{\hrule}
  21.    \let\rowstbsep=\colsep\let\headersep=\rowsep}
  22. \def\vruled{\def\lineglue{\hfil}     \def\colsep{\vrule}\def\rowsep{}
  23.    \let\rowstbsep=\colsep\let\headersep=\hrule}
  24. \def\ruled {\def\lineglue{\hrulefill}\def\colsep{\vrule}\def\rowsep{\hrule}
  25.    \let\rowstbsep=\colsep\let\headersep=\rowsep}
  26. \def\nonruled{\def\lineglue{\hfil}   \def\colsep{}      \def\rowsep{}
  27.    \def\rowstbsep{\vrule}\def\headersep{\hrule}}
  28. \def\dotruled{\def\lineglue{\dotfill}\def\rowsep{\hbox to\thsize{\dotfill}}
  29. \def\colsep{\lower1.5\tsdp\vbox to\cvsize{%
  30. \leaders\hbox to0pt{\vrule height2pt depth2pt width0pt\hss.\hss}\vfil}}
  31. \let\rowstbsep=\colsep\let\headersep=\rowsep}
  32. %Parameter setting macros:   Controling positioning
  33. \def\ctr{\def\lft{\hfil}\def\rgt{\hfil}}%Centered
  34. \def\fll{\def\lft{}     \def\rgt{\hfil}}%Flushed left
  35. \def\flr{\def\lft{\hfil}\def\rgt{}}     %Flushed right
  36. %Parameter setting macros:   Framing
  37. \def\framed{\let\frameit=\boxit}
  38. \def\nonframed{\def\frameit##1{##1}}
  39. \def\dotframed{\let\frameit=\dotboxit}
  40. %
  41. \def\btable#1{\vbox{\let\rsl=\rowstblst%Copy
  42. \ifx\empty\template\ifx\empty\rowstblst
  43.     \def\template{\colsepsurround\lft####\rgt&&\lft####\rgt\cr}
  44.     \else\def\template{\colsepsurround####\hfil&&\lft####\rgt\cr}\fi
  45.    \fi
  46. \tsht=.775\cvsize\tsdp=.225\cvsize
  47. \def\tstrut{\vrule height\tsht depth\tsdp width0pt}
  48. %Logical mark up of column and row separators, via use of
  49. \def\cs{&\colsepsurround\colsep\colsepsurround&}
  50. \def\prs{&\colsepsurround\lineglue&}   \def\srp{&\lineglue\colsepsurround&}
  51. \def\rs{\colsepsurround\tstrut\cr
  52.         \ifx\empty\rowsep\else\noalign{\rowsep}\fi
  53.         \ifx\empty\rowstblst\else\ea\nxtrs\fi}
  54. \def\grs{\colsepsurround\tstrut\cr\ghostrow}
  55. \def\rss{&\colsepsurround\rowstbsep\colsepsurround&}
  56. \def\hs{\colsepsurround\tstrut\cr
  57.        \ifx\empty\headersep\else\noalign{\headersep}\fi
  58.        \ifx\empty\rowstblst\else\ea\nxtrs\fi}
  59. \preinsert
  60. \setbox\tbl=\vbox{\tabskip=0pt\relax\offinterlineskip
  61. \halign{\span\template\ifx\empty\first\ifx\empty\rowstblst\else
  62. \ifx\empty\header\else\ea\rss\fi\fi\else\first\ea\rss\fi
  63. \ifx\empty\header\ifx\empty\first\if\empty\rsl\else\ea\nxtrs\fi
  64.                  \else\ea\hs\fi
  65. \else\header\ea\hs\fi
  66. #1\colsepsurround\tstrut\crcr}    }                              %end \setbox
  67. \postinsert
  68. \ifx\capbtbl\empty\else\hbox to\thsize{\strut\hfil\capbtbl\hss}\captionsep\fi
  69. \frameit{\copy\tbl}
  70. \ifx\footer\empty\else\footersep\hbox{\vtop{\noindent\hsize=\thsize%
  71. \footer}}\fi                     }}                              %end \btable
  72. %Defaults
  73. \cvsize=4ex\tsht=.775\cvsize\tsdp=.225\cvsize\def\colsepsurround{\kern.5em}
  74. \def\capbtbl{}\def\first{}\def\header{}\def\rowstblst{}\def\footer{}\def\data{}
  75. \def\captionsep{\medskip}    \def\headersep{\hrule}
  76. \def\footersep{\smallskip}   \def\rowstbsep{\vrule}
  77. \def\preinsert{}
  78. \def\postinsert{\global\thsize=\wd\tbl
  79.                 \global\tvsize=\ht\tbl\global\advance\tvsize by\dp\tbl}
  80. \ctr\nonruled\nonframed\def\template{}\def\ghostrow{}            %end Defaults
  81. %Auxiliaries
  82. \def\boxit#1{\vbox{\hrule\hbox{\vrule\vbox{#1}\vrule}\hrule}}
  83. \def\dotboxit#1{\vbox{\offinterlineskip\hbox to\thsize{\dotfill}%
  84. \hbox{\lower\tsdp\vbox to\tvsize{%
  85. \leaders\hbox to0pt{\hss\vrule height2pt depth2pt width0pt.\hss}\vfil}%
  86. \vbox{#1}\lower\tsdp\vbox to\tvsize{%
  87. \leaders\hbox to0pt{\hss\vrule height2pt depth2pt width0pt.\hss}\vfil}}%
  88. \hbox to\thsize{\dotfill}}}
  89. %And to account for logical columns with \logmultispan
  90. %\def\spicspan{\span\omit}
  91. \def\logmultispan#1{\omit\mscount=#1\multiply\mscount by2 \advance\mscount by-1
  92. \loop\ifnum\mscount>1 \spicspan\advance\mscount by-1 \repeat}
  93. %To process FIFO, Mod 1993
  94. %\def\fifo#1{\ifx\ofif#1\ofif\else\process#1\fi\fifo}
  95. %\def\ofif#1\fifo{\fi}
  96. %\def\process#1{\hbox to0pt{\hss#1\hss}\kern.5ex}
  97. %To handle the row stub list: \rsl
  98. \def\nxtrs{\ifx\empty\rsl%\let\nxtel=\relax
  99. \else\def\nxtel{\ea\nrs\rsl\srn}\ea\nxtel\fi}%next Row Stub
  100. \def\nrs#1#2\srn{\gdef\rsl{#2}#1\rss}
  101. %History of changes
  102. %Dec 93: \multispan name changed into \logmultispan  (logical multispan)
  103. %        name \caption changed into \capbtbl (no conflicts within LaTeX)
  104. %%%%btable end%%%%                         %end btable.tex, cgl@risc1.rug.nl
  105. %
  106. \bgroup
  107. \def\capbtbl{AT\&T Common Stock}
  108. \def\header{Year\cs Price\cs Dividend}
  109. \def\footer{* (first quarter only}
  110. \def\data{1971\cs 41--54\cs\llap{\$}2.60\rs
  111.              2\cs 41--54\cs         2.70}%et cetera
  112. $$\flr\btable\data\qquad\framed\ruled\btable\data$$
  113. \egroup
  114. %
  115. \def\data{PD                  \cs licensed via UNIX\rs
  116. all platforms                 \cs under UNIX       \rs
  117. \TeX book  (also on-line)     \cs On-line manual   \rs
  118. METAfont's CM, virtual fonts  \cs ?                \rs
  119. open system                   \cs kernel undocumented}
  120. %
  121. \def\header{(All)\TeX\cs T/Di-roff}
  122. \def\rowstblst{{Costs}{Availability}{Documentation}{Fonts}{{Design}}}
  123.                                     %Weird these extra {}  ^      ^
  124. \def\capbtbl{Troff versus \TeX/METAfont}
  125. $$\fll\btable\data$$
  126. \bye
  127.  
  128.  
  129.